#include <fcntl.h> // open
#include <unistd.h> // read write close
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    printf("有名管道读取端准备读取数据...\n");
    fflush(stdout);
    // step 1# 定义管道路径，并只读打开管道
    int fd;
    char *pipe_path = "myFifo";
    fd = open(pipe_path, O_RDONLY);
    if (fd == -1) {
        perror("When open");
        exit(EXIT_FAILURE);
    }
    // step 2# 定义读取 buf 和 读取到的字节数
    char read_buf[100];
    ssize_t read_num;
    // step 2.1# 如果从管道中读取到的字节数大于 0，则写入标准输出
    while((read_num = read(fd, read_buf, 100)) > 0) {
        write(STDOUT_FILENO, read_buf, read_num);
    }
    printf("接收管道退出\n");
    fflush(stdout);
    // step 3# 关闭管道
    close(fd);
    return 0;
}